﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace  RzCorportativo.Views.Consulta
{
    public partial class HistoricoConsultas : BasePage
    {

        private object DataSource
        {
            get { return this.Session["$HistoricoConsulta$DataSource"]; }
            set { this.Session["$HistoricoConsulta$DataSource"] = value; }
        }

        protected RzCorportativo.Lib.Consulta GetItem(object item)
        {
            if (!(item is RzCorportativo.Lib.Consulta))
                return new RzCorportativo.Lib.Consulta();
            return item as RzCorportativo.Lib.Consulta;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            this.ListaConsulta.SetSystemPageSize();
            if (this.IsPostBack)
                return;
            var itens = RzCorportativo.Lib.Consulta.Listar(new RzCorportativo.Lib.Consulta());
            this.DataSource = itens;
            this.ListaConsulta.DataSource = itens;
            this.ListaConsulta.DataBind();
            var especialidades = RzCorportativo.Lib.Especialidade.Listar(new RzCorportativo.Lib.Especialidade());
            especialidades.Insert(0, new RzCorportativo.Lib.Especialidade() { Descricao = "Selecione" });
            this.Especialidade.DataSource = especialidades;
            this.Especialidade.DataValueField = "EspecialidadeId";
            this.Especialidade.DataTextField = "Descricao";
            this.Especialidade.DataBind();
        }

        protected void buscar_Click(object sender, EventArgs e)
        {
            RzCorportativo.Lib.Consulta consulta = new RzCorportativo.Lib.Consulta();
            if (this.Nome.Text.Length > 0 || this.CPF.Text.Length > 0)
            {
                var pessoas = RzCorportativo.Lib.Usuario.Listar(new RzCorportativo.Lib.Usuario()
                {
                    Cpf = EFramework.Web.Configuration.MaskConfiguration.RemoveMask(this.CPF.Text, "cpfKeyDel"),
                    Nome = this.Nome.Text
                });
                var pessoa = pessoas.FirstOrDefault();
                if (pessoa != null)
                {
                    consulta.PacienteId = pessoa.UsuarioId;
                }
            }
            if (this.NomeMedico.Text.Length > 0)
            {
                var medicos = RzCorportativo.Lib.Medico.Listar(new RzCorportativo.Lib.Medico()
                {
                    Pessoa = new RzCorportativo.Lib.Usuario()
                    {
                        Nome = this.Nome.Text
                    }
                });
                var medico = medicos.FirstOrDefault();
                if (medico != null)
                {
                    consulta.MedicoId = medico.MedicoId;
                }
            }
            if (this.txtHrI.Text.Length > 0)
                consulta.HoraEntrada = EFramework.Web.TypeExtension.DateTimeExtension.Parse("01/01/0001 " + this.txtHrI.Text, DateTime.MinValue).TimeOfDay;
            if (this.txtHrS.Text.Length > 0)
                consulta.HoraSaida = EFramework.Web.TypeExtension.DateTimeExtension.Parse("01/01/0001 " + this.txtHrS.Text, DateTime.MinValue).TimeOfDay;
            if (!"0".Equals(this.Status.SelectedValue))
            {
                bool status = "1".Equals(this.Status.SelectedValue);
                consulta.Atendida = status;
            }
            consulta.EspecialidadeId = EFramework.Web.TypeExtension.ShortExtension.Parse(this.Especialidade.SelectedValue, 0);
            consulta.DateConsulta = EFramework.Web.TypeExtension.DateTimeExtension.Parse(this.Data.Text, DateTime.MinValue);
            var consultas = RzCorportativo.Lib.Consulta.Listar(consulta);
            this.ListaConsulta.DataSource = consultas;
            this.ListaConsulta.DataBind();
        }

        protected void ListaConsulta_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            DataSource = DataSource == null ? RzCorportativo.Lib.Especialidade.Listar(new RzCorportativo.Lib.Especialidade()) : DataSource;
            this.ListaConsulta.SetPage(e.NewPageIndex, DataSource);
        }
    }
}